#pragma once

#include <string>
#include <vector>
using namespace std;

struct clkFsmData{};
struct clkFsmCartridge
{
	//attributes
	int         m_selfId;
	int         m_swapId;
	string      m_name;
	bool        m_completed;
	bool        m_loaded;
	bool        m_renew;
	clkFsmData* m_sysdata;

	//ctor & dtor
	clkFsmCartridge()
	{
		m_selfId = -1;
		m_swapId = -1;
		m_name = "NAME";
		m_completed = false;
		m_loaded    = false;
		m_renew     = true;
		m_sysdata   = 0;
	}
	virtual ~clkFsmCartridge(){shut();}

	//main functions
	virtual void init(){}
	virtual void shut(){}
	virtual void reset(){}
	virtual void input(){}
	virtual void update(){}
	virtual void draw(){}
	virtual void pre(){}
	virtual void post(){}

	//getter functions
	bool completed(){return m_completed;}
	bool loaded(){return m_loaded;}
	bool renew(){return m_renew;}
};